package cn.sxgan.core.services;

import cn.sxgan.common.entity.query.SysMenuQuery;
import cn.sxgan.common.entity.vo.SysMenuVO;
import cn.sxgan.common.response.Result;

import java.util.List;

/**
 * @Description: 菜单服务接口
 * @Author: sxgan
 * @Date: 2025-01-03 09:31
 * @Version: 1.0
 **/

public interface IMenuService {
    
    /**
     * 获取菜单列表
     *
     * @param sysMenuQuery 菜单查询参数
     * @return 菜单列表
     */
    Result<List<SysMenuVO>> findMenuList(SysMenuQuery sysMenuQuery);
    
    /**
     * 添加菜单
     *
     * @param sysMenuVO 添加菜单实体
     * @return 添加是否成功
     */
    Result<String> addMenu(SysMenuVO sysMenuVO);
    
    /**
     * 绑定角色及其菜单
     *
     * @param roleId     角色ID
     * @param menuIdList 菜单ID集合
     * @return 绑定结果
     */
    Result<String> bindRoleAndMenu(Long roleId, List<Long> menuIdList);
    
    /**
     * 编辑菜单
     *
     * @param sysMenuVO 编辑后菜单实体
     * @return 修改结果
     */
    Result<String> editMenu(SysMenuVO sysMenuVO);
    
    /**
     * 批量移除菜单
     *
     * @param menuIds 菜单ID集合
     * @return 移除结果
     */
    Result<String> removeMenu(List<Long> menuIds);
}
